SQL ANY and ALL Operators

एकल स्तंभ मान और अन्य मानों की श्रेणी के बीच तुलना करें, किसी भी और सभी ऑपरेटरों के बारे में जानें

SQL Any और ALL ऑपरेटर्स क्या हैं?

कोई भी और सभी ऑपरेटर आपको एकल कॉलम मान की तुलना अन्य मानों की श्रेणी से करने की अनुमति देते हैं।

SQL ANY Operator

ANY operator:

श्रेणी में कोई भी मानकोईयदि फ़ंक्शन किसी के लिए सत्य है तो स्थिति सत्य है।

कोई वाक्यविन्यास

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
  (SELECT column_name
  FROM table_name
  WHERE condition);

नोट:

ऑपरेटर को एक मानक तुलना ऑपरेटर (=, <>, !=, >, >=, <, या <=) होना चाहिए।

SQL ALL Operator

ALL operator:

ALL मानों की एक श्रृंखला हैप्रत्येक वस्तु के लिएइसका मतलब यह है कि स्थिति तभी सत्य है जब फ़ंक्शन सत्य है।

चयन के साथ सभी वाक्यविन्यास

SELECT ALL column_name(s)
FROM table_name
WHERE condition;

WHERE या HAVING के साथ सभी वाक्यविन्यास

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
  (SELECT column_name
  FROM table_name
  WHERE condition);

नोट:

ऑपरेटर को एक मानक तुलना ऑपरेटर (=, <>, !=, >, >=, <, या <=) होना चाहिए।

प्रदर्शन डेटाबेस

नीचे नॉर्थविंड नमूना डेटाबेस में "उत्पाद" तालिका से एक चयन दिया गया है:

उत्पाद तालिका

+-----------+------------------------------+------------+------------+-----------------------+-------+
| ProductID | ProductName                  | SupplierID | CategoryID | Unit                  | Price |
+-----------+------------------------------+------------+------------+-----------------------+-------+
| 1         | Chais                        | 1          | 1          | 10 boxes x 20 bags    | 18    |
| 2         | Chang                        | 1          | 1          | 24 - 12 oz bottles    | 19    |
| 3         | Aniseed Syrup                | 1          | 2          | 12 - 550 ml bottles   | 10    |
| 4         | Chef Anton's Cajun Seasoning | 2          | 2          | 48 - 6 oz jars        | 22    |
| 5         | Chef Anton's Gumbo Mix       | 2          | 2          | 36 boxes              | 21.35 |
| 6         | Grandma's Boysenberry Spread | 3          | 2          | 12 - 8 oz jars        | 25    |
| 7         | Uncle Bob's Organic Dried... | 3          | 7          | 12 - 1 lb pkgs.       | 30    |
| 8         | Northwoods Cranberry Sauce   | 3          | 2          | 12 - 12 oz jars       | 40    |
| 9         | Mishi Kobe Niku              | 4          | 6          | 18 - 500 g pkgs.      | 97    |
+-----------+------------------------------+------------+------------+-----------------------+-------+

और "ऑर्डर विवरण" तालिका से एक चयन:

ऑर्डर विवरण तालिका

+---------------+---------+-----------+----------+
| OrderDetailID | OrderID | ProductID | Quantity |
+---------------+---------+-----------+----------+
| 1             | 10248   | 11        | 12       |
| 2             | 10248   | 42        | 10       |
| 3             | 10248   | 72        | 5        |
| 4             | 10249   | 14        | 9        |
| 5             | 10249   | 51        | 40       |
| 6             | 10250   | 41        | 10       |
| 7             | 10250   | 51        | 35       |
| 8             | 10250   | 65        | 15       |
| 9             | 10251   | 22        | 6        |
| 10            | 10251   | 57        | 15       |
+---------------+---------+-----------+----------+

एसक्यूएल कोई भी उदाहरण

निम्नलिखित SQL कथन ऑर्डर विवरण तालिका में ProductName को मात्रा 10 के बराबर सूचीबद्ध करता हैकोईयदि रिकॉर्ड हैं (जो सत्य लौटाता है क्योंकि मात्रा कॉलम में 10 मान हैं):

उदाहरण

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);

निम्नलिखित SQL कथन ऑर्डर विवरण तालिका में उत्पाद नाम, 99 से अधिक मात्रा को सूचीबद्ध करता हैकोईयदि रिकॉर्ड हैं (यह सत्य लौटाएगा क्योंकि मात्रा कॉलम का कुछ मान 99 से अधिक है):

उदाहरण

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 99);

निम्नलिखित SQL कथन ऑर्डर विवरण तालिका में 1000 से अधिक मात्रा वाले उत्पाद नाम को सूचीबद्ध करता है।कोईयदि रिकॉर्ड हैं (जो गलत लौटाता है क्योंकि मात्रा कॉलम में 1000 से अधिक कोई मान नहीं है):

उदाहरण

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 1000);

एसक्यूएल सभी उदाहरण

निम्नलिखित SQL कथनसभीउत्पाद के नाम भी सूचीबद्ध करता है:

उदाहरण

SELECT ALL ProductName
FROM Products
WHERE TRUE;

निम्न SQL कथन ऑर्डर विवरण तालिका में उत्पाद नाम सूचीबद्ध करता हैसभीयदि प्रविष्टियाँ मात्रा 10 के बराबर हैं। यह FALSE लौटाएगा क्योंकि मात्रा कॉलम में कई अलग-अलग मान हैं (सिर्फ मान 10 नहीं):

उदाहरण

SELECT ProductName
FROM Products
WHERE ProductID = ALL
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);

कोई भी बनाम सभी दृश्य प्रतिनिधित्व

ANY Operator

स्थिति:मात्रा = 10 इंचकोईउत्पादों

Product A - Quantity: 10
Product B - Quantity: 5
Product C - Quantity: 8
Product D - Quantity: 10
✓ परिणाम: सत्य (2 मिलान रिकॉर्ड)

ALL Operator

स्थिति:मात्रा = 10 इंचसभीउत्पादों

Product A - Quantity: 10
Product B - Quantity: 5
Product C - Quantity: 8
Product D - Quantity: 10
✗ परिणाम: गलत (सभी मेल नहीं खाते)

टिप्पणी: ANY कोईयदि कोई मिलान रिकॉर्ड है तो सभी सत्य लौटाते हैंसभीTRUE तभी लौटाता है जब रिकॉर्ड भी मेल खाते हों।

व्यावहारिक उपयोग के मामले

औसत मूल्यों से अधिक

औसत कीमत से अधिक महंगाकोईउत्पादों

SELECT ProductName
FROM Products
WHERE Price > ANY (
    SELECT AVG(Price) 
    FROM Products 
    GROUP BY CategoryID
);

सभी शर्तें

सभीग्राहकों द्वारा ऑर्डर किए गए उत्पाद

SELECT ProductName
FROM Products
WHERE ProductID = ALL (
    SELECT DISTINCT ProductID 
    FROM Orders 
    WHERE CustomerID IN (
        SELECT CustomerID FROM Customers
    )
);

न्यूनतम मूल्य फ़िल्टरिंग

न्यूनतम कीमत से भी कमकोईउत्पादों

SELECT ProductName
FROM Products
WHERE Price < ANY (
    SELECT MIN(Price) 
    FROM Products 
    GROUP BY SupplierID
);

किसी भी बनाम IN की तुलना

ANY Operator

  • तुलना ऑपरेटरों (>, <, =, आदि) के साथ उपयोग किया जा सकता है
  • मूल्यों की एक श्रृंखला के साथ तुलना उपयोगी है
  • जटिल परिस्थितियों के लिए उपयुक्त
  • सबक्वेरी परिणामों के साथ काम करती है
WHERE Price > ANY (subquery)

IN Operator

  • (=) का उपयोग समान मानों के परीक्षण के लिए किया जाता है।
  • स्थिर मूल्य सूचियों के लिए उपयुक्त
  • सरल समानता परीक्षणों के लिए उपयुक्त
  • स्थिर सूचियों या उपश्रेणियों के साथ काम करता है
WHERE Price IN (10, 20, 30)

नोट:

= ANYहैINके बराबर है, लेकिन> ANYया< ANYकिसी भी जैसे अन्य तुलना ऑपरेटरों के साथ उपयोग किए जाने पर अधिक लचीलापन प्रदान करता है।

अभ्यास

कौन सा SQL कथन किसी भी ऑपरेटर का सही उपयोग करता है?

SELECT * FROM Products WHERE ProductID ANY (SELECT ProductID FROM OrderDetails);
✗ ग़लत! किसी को तुलना ऑपरेटर की आवश्यकता होती है
SELECT * FROM Products WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails);
✓ ठीक है! ANY ऑपरेटर का उपयोग सही तुलना ऑपरेटर (=) के साथ किया जाता है।
SELECT ProductName ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 10);
✗ ग़लत! किसी भी चयन सूची में उपयोग नहीं किया जा सकता
SELECT * FROM Products WHERE ANY ProductID IN (SELECT ProductID FROM OrderDetails);
✗ ग़लत! कोई भी सिंटैक्स अमान्य है और इसका उपयोग WHERE क्लॉज में तुलना ऑपरेटर के साथ किया जाना चाहिए